### Бинарные деревья поиска I
1. Реализуйте шаблон класса BinarySearchTree и соответствующие итераторы
```cpp
template< typename Key, typename Value, typename Compare >
class BinarySearchTree
{
   ...
};
```
Интерфейс класса должен быть безопасным. Дерево должно быть сбалансированным

2. Исправьте реализацию класса «Словарь»: используйте реализованное дерево поиска вместо списка
в качестве контейнера.

4. Реализуйте программу, описанную в задании Списки I с использованием реализованного дерева
поиска

6. Избегайте дублирования кода. При необходимости сделайте правки в предыдущих работах
   
Совет-1 Не берите за основу ранее реализованный двунаправленный список. Хотя его итераторы и итераторы
дерева поиска относятся к одной категории, устройство контейнеров и стратегии обхода существенно
различаются
